package com.lz.demo2;

import java.util.concurrent.TimeUnit;

/**
 * @Description: Negtive 运行后发现该程序根本无法终止循环，原因是
 * java语言规范并不保证一个线程写入的值对另外一个线程是可见的
 * 所以即使主线程main函数修改了共享变量stopThread状态，但是对th线程并不一定可见
 * 最终导致循环无法终止。
 * @Date: 2020/5/5 11:35
 * @Author: LiZhen
 * @Version: 1.0
 */
public class Negtive {
    private static boolean stopThread;
    public static void main(String[] args) throws InterruptedException {
        Thread th = new Thread(new Runnable() {
            @Override
            public void run() {
                int i = 0;
                while (!stopThread) {
                    i++;
                }
            }
        });
        th.start();
        TimeUnit.SECONDS.sleep(2);
        stopThread = true;
    }
}
